package com.yycx.msg.provider.service;

import com.yycx.common.base.vo.MsgSendRequest;
import com.yycx.common.mybatis.base.service.IBaseService;
import com.yycx.common.base.entity.EntityMap;
import com.yycx.common.mybatis.model.ResultBody;
import com.yycx.msg.client.entity.MsgContent;

import java.util.List;
import java.util.Map;

/**
 * 消息表 接口
 *
 * @author flyme
 * @date 2020-02-26
 */
public interface MsgContentService extends IBaseService<MsgContent> {
    /**
     * 查询用户未接收的消息
     *
     * @param params
     * @return
     */
    List<MsgContent> selectNotReceiveByUserId(EntityMap params);


    /**
     * 发布消息
     *
     * @param params
     * @return
     */
    ResultBody sendMessage(Map params);

    /**
     * 推送消息
     *
     * @param params
     * @return
     */
    ResultBody pushMessage(Map params);


    /**
     * 根据类型查询公告,公告状态是已发布
     *
     * @param typeCode
     * @param limit
     * @return
     */
    List<EntityMap> selectMsgContentByTypeCode(String typeCode, Integer limit);

    /**
     * 根据消息类型统计数量
     *
     * @param params
     * @return
     */
    Long totalMsgByType(Map params);

    /**
     * 发送消息
     *
     * @param msgSendRequest
     * @return
     */
    MsgContent sendMessage(MsgSendRequest msgSendRequest);

    /**
     * 根据类型删除用户消息
     * @param userId
     * @param msgTypeId
     */
    void deleteUserMsgByTypeId(Long userId, Integer msgTypeId);
}
